package memento;

import java.awt.Point;

import vista.objetos.GraficableConEtiqueta;

import controlador.ControladorEditor;

public abstract class MementoGraficable extends Memento {
	
	private Point posicion;

	public MementoGraficable(GraficableConEtiqueta guardable, Point posicion)
	{
		super(guardable);
		this.posicion = new Point(posicion);
	}

	@Override
	public final void cargarMemento()
	{
		cargarLogico();
		cargarGraficable();
		ControladorEditor.getInstancia().actualizarVista();
	}

	private void setPosicion() 
	{
		GraficableConEtiqueta graficable = (GraficableConEtiqueta) super.getGuardable();

		Point desplazamiento = new Point(posicion.x - graficable.getPunto().x ,
				posicion.y - graficable.getPunto().y);
		
		graficable.dragGraficable(desplazamiento);
	}
	
	void cargarGraficable() {
		setPosicion();
	}
	
	abstract void cargarLogico();
	
	
	protected Point getPosicion(){
		return this.posicion;
	}
	
	
}
